
function promiseWrapper(fetchApi) {
    //? 应用闭包了 这个oldReqPromise只有第一次进来时赋值 后面都是在函数里面修改
    let oldReqPromise = Promise.resolve();
    return () => {
        const newReqPromise = oldReqPromise.then(() => {
            return new Promise((resolve, reject) => {
                setTimeout(() => {
                    resolve("data");
                }, 1000);
            });
        });
        // 这个是同步函数 也就实现了链式then
        oldReqPromise = newReqPromise;
        return newReqPromise;
    };
}

// 测试用例
const request = promiseWrapper();
// * 整个链条就相当于: Promise.resolve().then().then().then()
request().then(() => {
    console.log("第一次请求完成");
});

request().then(() => {
    console.log("第二次请求完成");
});

setTimeout(() => {
    request().then(() => {
        console.log("第三次请求完成");
    });
}, 1500);
